package com.jt.controller;

import com.jt.service.FileService;
import com.jt.vo.ImageVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * 文件上传测试案例
 */
@RestController
public class FileController {

    @Autowired
    private FileService fileService;
    /**
     * 完成文件上传的入门案例
     * url地址: http://localhost:8091/file
     * 请求参数: fileImage
     * 返回值:   文件上传成功
     *
     * 利用SpringMVC中提供的工具API,实现文件上传的简化.
     * 记住类型:MultipartFile
     * 实现步骤:
     *      1.接收资源文件
     *      2.准备文件上传目录
     *      3.准备文件上传的全路径   目录/文件名称
     */
    @RequestMapping("/file")
    public String file(MultipartFile fileImage){

        //指定文件上传后保存的路径
        String fileDirPath = "E:/JT-SOFT/images";
        //将目录信息传给File对象
        File dirFile = new File(fileDirPath);
        //判断文件目录是否存在
        if (!dirFile.exists()){
            //如果没有这个文件目录则新建这个目录
            dirFile.mkdirs();//创建多级目录
        }
        //准备文件上传的全路径    路径+文件名称
        //注意此方法文件名称中不能有中文，否则会获取不到
        String fileName = fileImage.getOriginalFilename();  //获取文件名称
        File realFile = new File(fileDirPath+"/"+fileName);
        //将字节信息输出到文件中
        try {
            fileImage.transferTo(realFile); //实现文件上传
            return "上传成功";
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败";
        }
    }


    /**
     * 实现图片上传操作
     * url地址：http://localhost:8091/pic/upload?dir=image
     * 参数信息：uploadFile
     * 返回值对象： ImageVo对象
     */
    @RequestMapping("/pic/upload")
    public ImageVO upload(MultipartFile uploadFile){
        return fileService.upload(uploadFile);
    }
}
